home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / ATUtilities.lha / ATUtilities / BASIC / ATSERVER.BAS < prev    next >
BASIC Source File  |  2000-09-26  |  3KB  |  120 lines

  1. DEF SEG = &HD000
  2. CLS
  3.  
  4. rem ATServer:
  5. rem  00: AppID
  6. rem  02: LocalID
  7. rem  04: Version
  8. rem  06: Revision
  9. rem  08: NetworkState
  10. rem  10: NetServerCall
  11. rem  11: NetServerReady
  12. rem  12: NetCommand
  13. rem  14: NetArg1Offset
  14. rem  16: NetArg2Offset
  15. rem  18: NetArg3Offset
  16. rem  20: NetArg4Offset
  17. rem  22: NetActual
  18. rem  24: NetError
  19. rem  26: ExtendedServerData
  20.  
  21. %GETDIR=1
  22. %CHANGEDIR=2
  23. %OPENFILE=3
  24. %CLOSEFILE=4
  25. %READFILE=5
  26. %WRITEFILE=6
  27. %SEEKFILE=7
  28. %DELETEFILE=8
  29. %RENAMEFILE=9
  30. %CONNECT=5000
  31. %DISCONNECT=4000
  32.  
  33. server=GetJInt(31,4005,7004,33,1)
  34. IF server=-1 THEN
  35.  PRINT ""
  36.  PRINT "<< Programmabbruch durch Fehler >>"
  37.  PRINT ""
  38. ELSE
  39.  PRINT "Server gefunden bei Offset";server
  40.  
  41.  REM ===== Aktuelles Verzeichnis listen =====
  42.  CALL CallJInt(server,%GETDIR)
  43.  offset=PEEKI(server+14)
  44.  laenge=PEEKI(server+16)
  45.  FOR i=0 TO laenge
  46.   x=PEEK(server+offset+i)
  47.   IF x=0 THEN PRINT "" ELSE PRINT CHR$(x);
  48.  NEXT
  49.  REM ========================================
  50.  
  51.  REM ===== Verzeichnis wechseln =============
  52.  vn$="DH0:Sprachen/Aztec-C 3.4a/include"
  53.  laenge=LEN(vn$)-1
  54.  FOR i=0 TO laenge
  55.    POKE server+36+i,ASC(MID$(vn$,i+1,1))
  56.  NEXT
  57.  POKEI server+14,36
  58.  POKEI server+16,laenge
  59.  CALL CallJInt(server,%CHANGEDIR)
  60.  REM ========================================
  61.  
  62.  
  63.  CALL FreeJInt(server)
  64. END IF
  65. END
  66.  
  67. FUNCTION GetJInt(intNum,appID,localID,ver,rev) STATIC
  68.   DEF SEG = &HD000
  69.   tabelle&=PEEKI(32)
  70.   serv=PEEKI(tabelle&+(intNum*2))
  71.   IF serv>-1 THEN
  72.     IF (PEEKI(serv+08)<>1) THEN
  73.       PRINT "FEHLER: Amiga-Server von Janus-Interrupt";intNum;"ist nicht fr
  74.       PRINT "        Verbindungsaufbau bereit."
  75.       GOTO GetJInt.Fehler
  76.     END IF
  77.     IF (PEEKI(serv+00)<>appID) THEN
  78.       PRINT "FEHLER: Amiga-Server von Janus-Interrupt";intNum;"hat eine falsche"
  79.       PRINT "        Applikations-ID."
  80.       GOTO GetJInt.Fehler
  81.     END IF
  82.     IF (PEEKI(serv+02)<>localID) THEN
  83.       PRINT "FEHLER: Amiga-Server von Janus-Interrupt";intNum;"hat eine falsche"
  84.       PRINT "        Lokal-ID."
  85.       GOTO GetJInt.Fehler
  86.     END IF
  87.     IF (PEEKI(serv+04)<ver) OR (PEEKI(serv+06)<rev) THEN
  88.       PRINT "FEHLER: Amiga-Server von Janus-Interrupt";intNum;"hat eine „ltere"
  89.       PRINT "        Version als der PC-Server."
  90.       GOTO GetJInt.Fehler
  91.     END IF
  92.   ELSE
  93.     PRINT "FEHLER: Amiga-Server ist nicht aktiv."
  94.     GOTO GetJInt.Fehler
  95.   END IF
  96.   POKEI serv+08,2
  97.   CALL CallJInt(serv,%CONNECT)
  98.   GOTO GetJInt.Ende
  99. GetJInt.Fehler:
  100.   IF FreeServ=1 THEN
  101.     POKE serv+09,PEEK(serv+09)-1
  102.   END IF
  103.   serv=-1
  104. GetJInt.Ende:
  105.   GetJInt=serv
  106. END FUNCTION
  107.  
  108. SUB FreeJInt(serv) STATIC
  109.  CALL CallJInt(serv,%DISCONNECT)
  110. END SUB
  111.  
  112. SUB CallJInt(serv,funcNum) STATIC
  113.  DEF SEG = &HD000
  114.  POKEI serv+08,1
  115.  POKEI serv+12,funcNum
  116.  POKE  serv+11,1
  117.  POKE  serv+10,1
  118.  WHILE (PEEK(serv+11)=1) : WEND   : REM  Auf Best„tigung warten
  119. END SUB
  120.